#include "mathfunctions.h"
#include <cmath>

// Funktion normalisiert einen Vektor
void mathfunctions::normalizeVector(datatypes::triangle &vec)
{
	const float vecLength = sqrt(vec.x*vec.x+vec.y*vec.y+vec.z*vec.z);
	vec.x=(vec.x/vecLength);
	vec.y=(vec.y/vecLength);
	vec.z=(vec.z/vecLength);

}

// Funktion errechnet das Kreuzprodukt zweier Vektoren
void mathfunctions::vectorCrossProduct(datatypes::triangle       &desVec, 
	                                      const datatypes::triangle &vec1, 
					      const datatypes::triangle &vec2)
{	
       desVec.x=vec1.y*vec2.z-vec1.z*vec2.y;
       desVec.y=vec1.z*vec2.x-vec1.x*vec2.z;
       desVec.z=vec1.x*vec2.y-vec1.y*vec2.x;
}

//Hilfsfunktion fuer die Kamerasteurung
void mathfunctions::normiereVektor2D(float *x) {
	float prod = (*x * *x) + ( *(x+1) * *(x+1) );
	float laenge = 1.0;
	if(prod >= 0.0)	laenge = sqrt(prod);
	*x = (*x) / (laenge);
	*(x+1) = (*(x+1)) / (laenge);
}
